home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CD ROM Paradise Collection 4
/
CD ROM Paradise Collection 4 1995 Nov.iso
/
music
/
cthugha5.zip
/
CTHU5SRC.ZIP
/
PATCH.C
< prev
next >
Wrap
C/C++ Source or Header
|
1994-08-19
|
2KB
|
140 lines
#ifdef _MSC_VER
#include <dos.h>
#include <stdlib.h>
#include <memory.h>
#include <time.h>
#include "patch.h"
#if 0
void (__cdecl __interrupt __far * __cdecl getvect(unsigned i))()
{
return _dos_getvect(i);
}
void __cdecl setvect(unsigned i, void (__cdecl __interrupt __far *h)())
{
_dos_setvect(i,h);
}
#endif
unsigned long speed; /* used by delay functions */
volatile int in; /* used for initialization */
unsigned long current; /* used for consistant timings */
unsigned long total;
void delay(unsigned int ms);
#ifdef _MSC_VER
static void (_interrupt _far *oldtimr)(void);
#else
static void __interrupt __far (*oldtimr)(void);
#endif
void interrupt far timr()
{
in++;
(*oldtimr)();
}
/* Initialize delay loop, I think this works... :) */
void delay_init(void)
{
oldtimr = _dos_getvect(0x08);
_dos_setvect(0x08,timr);
current = 0;
total = 1;
in = -1;
while( in < 0 );
while( (current<total) && (in == 0) ) speed++;
// speed = ( speed * 107 ) / 100; // Looking back, this makes no sense.
in = 0;
_dos_setvect(0x08,oldtimr);
}
void delay(unsigned ms)
{
if( !speed )
delay_init();
current = 0;
total = (speed * ms) / 55; // Clock tick = 55 milliseconds
while( (current < total) && (in == 0) ) current++;
}
/* Following routines are otherwise accounted for or no longer used */
#if 0
void textattr(int i)
{
// Put a routine to set BIOS colors here
}
void pokeb(unsigned int screen,unsigned int offset, char c)
{
char *disp;
FP_SEG(disp)=screen;
FP_OFF(disp)=offset;
*disp=c;
}
void poke(unsigned int screen,unsigned int offset, int i)
{
int *disp;
FP_SEG(disp)=screen;
FP_OFF(disp)=offset;
*disp=i;
}
char peekb(unsigned int screen,unsigned int offset)
{
char *disp;
FP_SEG(disp)=screen;
FP_OFF(disp)=offset;
return *disp;
return 0;
}
int gettext(int x1,int y1,int x2,int y2, char *buff)
{
}
int puttext(int x1,int y1,int x2,int y2, char *buff)
{
}
int window(int x1,int y1, int x2, int y2)
{
}
int clrscr(void)
{
}
#endif
#endif